#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

void test1()
{
  FILE* fp = fopen("test.txt", "w+");   // 使用绝对路径来进行查找，读写操作，没有会进创建对应文件，有会将其数据清空
  const char* ptr = "你好, Linux!\n"; // 输入我们想要写入的字符串
  //write(ptr, 1, strlen(ptr), fp);  // 输出字符串 每个数据大小 多少个数据 目标写入文件
  fprintf(fp,"%s", ptr);
  fclose(fp);  // 不要忘记关闭文件哦
}

void test2()
{
  const char* ptr = "你好, Linux!\n";
  fprintf(stdout, "%s", ptr);
}

#define S_GOOD 0x1  // 学生好选项
#define T_GOOD 0x2  // 老师好选项
#define L_GOOD 0x4  // 领导好选项

void test3(int flag)
{
  if (flag & 0x1) printf("学生好\n");  // 001
  if (flag & 0x2) printf("老师好\n");  // 010
  if (flag & 0x4) printf("领导好\n");  // 100 
}

void test4()
{
  printf("----------------------------\n");
  test3(S_GOOD);
  printf("----------------------------\n");
  test3(T_GOOD);
  printf("----------------------------\n");
  test3(L_GOOD);
  printf("----------------------------\n");
  test3(S_GOOD | T_GOOD);
  printf("----------------------------\n");
  test3(S_GOOD | L_GOOD);
  printf("----------------------------\n");
  test3(S_GOOD | T_GOOD | L_GOOD);
  printf("----------------------------\n");
}

void test5()
{
  int fd = open("test.txt", O_RDWR | O_CREAT | O_TRUNC, 0666);  // 可读可写 没有此文件创建 打开文件前清空 文件访问权限（最后和掩码要过滤
  if (fd < 0)
  {
    perror("open error");
    return -1;
  }

}

int main()
{
  test4();
  return 0;
}
